f->used = rfx_calloc(sizeof(f->used[0])*orig->num_glyphs);
int t;
for(t=0;t<orig->num_glyphs;t++) {
- if(orig->glyphs[t].unicode==32)
+ if(orig->glyphs[t].unicode==32 &&
+ (!orig->glyphs[t].line ||
+ !orig->glyphs[t].line->next ||
+ !orig->glyphs[t].line->next->next))
f->used[t]=1; //always preserve the space char in fonts
}
return f;
for(t=0;t<font->num_glyphs;t++) {
gfxglyph_t*g = &font->glyphs[t];
if(GLYPH_IS_SPACE(g)) {
- if(g->unicode == 32) return t;
+ if(g->unicode == 32) {
+ /* now that we have found a space char, make sure it's unique */
+ int s;
+ for(s=0;s<font->num_glyphs;s++) {
+ if(s!=t && font->glyphs[s].unicode==32)
+ font->glyphs[s].unicode=0;
+ }
+ return t;
+ }
}
}
return -1;